비고
이 문서는 이 API에 대한 참조 설명서를 보충하는 추가 설명을 제공합니다.
클래스는 HashSet<T> 고성능 집합 작업을 제공합니다. 집합은 중복 요소가 없고 요소가 특정 순서가 없는 컬렉션입니다.
개체의 HashSet<T> 용량은 개체가 보유할 수 있는 요소의 수입니다. HashSet<T> 개체에 요소가 추가되면 개체의 용량이 자동으로 증가합니다.
클래스는 HashSet<T> 수학 집합의 모델을 기반으로 하며 또는 Dictionary<TKey,TValue> 컬렉션의 Hashtable 키에 액세스하는 것과 유사한 고성능 집합 작업을 제공합니다. 간단히 말하면 클래스를 HashSet<T> 값이 없는 컬렉션으로 Dictionary<TKey,TValue> 간주할 수 있습니다.
HashSet<T> 컬렉션이 정렬되지 않았으므로 중복 요소를 포함할 수 없습니다. 순서 또는 요소 중복이 애플리케이션의 성능보다 더 중요한 경우 메서드와 함께 클래스를 List<T>Sort 사용하는 것이 좋습니다.
HashSet<T> 는 집합 더하기(공용 구조체) 및 집합 빼기와 같은 많은 수학 집합 연산을 제공합니다. 다음 표에서는 제공된 HashSet<T> 연산과 해당 수학 연산을 나열합니다.
| HashSet 작업 | 그에 상응하는 수학 |
|---|---|
| UnionWith | 공용 구조체 또는 집합 추가 |
| IntersectWith | 교차점 |
| ExceptWith | 빼기 설정 |
| SymmetricExceptWith | 대칭 차이 |
나열된 집합 작업 외에도 클래스는 집합 같음, HashSet<T> 집합 겹침 및 집합이 다른 집합의 하위 집합인지 또는 상위 집합인지를 결정하는 메서드를 제공합니다.
.NET Framework만 해당: 매우 큰 HashSet<T> 개체의 경우 구성 요소의 enabled 특성을 런타임 환경에서 설정 <gcAllowVeryLargeObjects> 하여 64비트 시스템에서 최대 용량을 20억 요소로 true 늘릴 수 있습니다.
HashSet<T> 클래스가 ISet<T> 인터페이스를 구현합니다.
HashSet 및 LINQ 집합 작업
LINQ는 Distinct, Union, Intersect, 및 Except 집합 작업에 대한 액세스를 IEnumerable 또는 IQueryable 인터페이스를 구현하는 모든 데이터 원본에 제공합니다.
HashSet<T>는 더 크고 강력한 집합 작업 컬렉션을 제공합니다. 예를 들어 다음과 HashSet<T> 같은 IsSubsetOfIsSupersetOf비교를 제공합니다.
LINQ 집합 작업과 HashSet<T> 작업 간의 주요 차이점은 LINQ 집합 작업이 항상 새 IEnumerable<T> 컬렉션을 반환하는 반면 HashSet<T> 동일한 메서드는 현재 컬렉션을 수정한다는 것입니다.
일반적으로 새 집합을 만들어야 하거나 애플리케이션이 제공된 집합 작업에만 액세스해야 하는 경우 모든 IEnumerable<T> 컬렉션 또는 배열에서 LINQ 집합 작업을 사용하는 것으로 충분합니다. 그러나 애플리케이션에 추가 집합 작업에 대한 액세스가 필요하거나 새 컬렉션을 만드는 것이 바람직하지 않거나 필요하지 않은 경우 클래스를 HashSet<T> 사용합니다.
다음 표에서는 HashSet<T> 작업과 해당 LINQ 집합 작업을 보여줍니다.
| HashSet 작업 | LINQ 동등한 것 |
|---|---|
| UnionWith | Union |
| IntersectWith | Intersect |
| ExceptWith | Except |
| 제공되지 않습니다. | Distinct |
| SymmetricExceptWith | 제공되지 않습니다. |
| Overlaps | 제공되지 않습니다. |
| IsSubsetOf | 제공되지 않습니다. |
| IsProperSubsetOf | 제공되지 않습니다. |
| IsSupersetOf | 제공되지 않습니다. |
| IsProperSupersetOf | 제공되지 않습니다. |
| SetEquals | 제공되지 않습니다. |
.NET